﻿using System.Net;

namespace Cuce.ReportingServices.SSRSWS
{

    /// <summary>
    /// Interface to Reporting Service Proxy
    /// </summary>
    public interface IReportingService
    {
        /// <summary>
        /// Gets the report data sources.
        /// </summary>
        /// <param name="Report">The report.</param>
        /// <returns>An Array of datasoucres</returns>
        DataSource[] GetReportDataSources(string Report);

        /// <summary>
        /// Gets the report definition.
        /// </summary>
        /// <param name="Report">The report.</param>
        /// <returns></returns>
        byte[] GetReportDefinition(string Report);

        /// <summary>
        /// Renders the specified report.
        /// </summary>
        /// <param name="Report">The report.</param>
        /// <param name="Format">The format.</param>
        /// <param name="HistoryID">The history ID.</param>
        /// <param name="DeviceInfo">The device info.</param>
        /// <param name="Parameters">The parameters.</param>
        /// <param name="Credentials">The credentials.</param>
        /// <param name="ShowHideToggle">The show hide toggle.</param>
        /// <param name="Encoding">The encoding.</param>
        /// <param name="MimeType">Type of the MIME.</param>
        /// <param name="ParametersUsed">The parameters used.</param>
        /// <param name="Warnings">The warnings.</param>
        /// <param name="StreamIds">The stream ids.</param>
        /// <returns>An byte array of the actual report</returns>
        byte[] Render(string Report, string Format, string HistoryID, string DeviceInfo, ParameterValue[] Parameters, DataSourceCredentials[] Credentials, string ShowHideToggle, out string Encoding, out string MimeType, out ParameterValue[] ParametersUsed, out Warning[] Warnings, out string[] StreamIds);
        
        /// <summary>
        /// Sets the report data sources.
        /// </summary>
        /// <param name="Report">The report.</param>
        /// <param name="DataSources">The data sources.</param>
        void SetReportDataSources(string Report, DataSource[] DataSources);
        
        /// <summary>
        /// Gets or sets the URL.
        /// </summary>
        /// <value>The URL of the SSRS</value>
        string Url { get; set; }
        
        /// <summary>
        /// Gets or sets the proxy.
        /// </summary>
        /// <value>The proxy</value>
         IWebProxy Proxy { get; set; }
        
        /// <summary>
         /// Gets or sets the credentials.
         /// </summary>
         /// <value>The credentials.</value>
         ICredentials Credentials { get; set; }

         /// <summary>
         /// Creates the report.
         /// </summary>
         /// <param name="Report">The report.</param>
         /// <param name="Parent">The parent.</param>
         /// <param name="Overwrite">if set to <c>true</c> [overwrite].</param>
         /// <param name="Definition">The definition.</param>
         /// <param name="Properties">The properties.</param>
         /// <returns>An Array of warnings</returns>
        Warning[] CreateReport(string Report, string Parent, bool Overwrite, byte[] Definition, Property[] Properties);

        /// <summary>
        /// Lists the roles.
        /// </summary>
        /// <returns>An array of Roles</returns>
        Role[] ListRoles();

        /// <summary>
        /// Deletes a report.
        /// </summary>
        /// <param name="Item">The name of the report to delete</param>
        void DeleteItem(string Item);

        # region "Unimplemented Functions"

        //void RenderAsync(string Report, string Format, string HistoryID, string DeviceInfo, ParameterValue[] Parameters, DataSourceCredentials[] Credentials, string ShowHideToggle, object userState);
        //void RenderAsync(string Report, string Format, string HistoryID, string DeviceInfo, ParameterValue[] Parameters, DataSourceCredentials[] Credentials, string ShowHideToggle);
        //event RenderCompletedEventHandler RenderCompleted;
        //byte[] RenderStream(string Report, string Format, string StreamID, string HistoryID, string DeviceInfo, ParameterValue[] Parameters, out string Encoding, out string MimeType);
        //void RenderStreamAsync(string Report, string Format, string StreamID, string HistoryID, string DeviceInfo, ParameterValue[] Parameters, object userState);
        //void RenderStreamAsync(string Report, string Format, string StreamID, string HistoryID, string DeviceInfo, ParameterValue[] Parameters);
        //event RenderStreamCompletedEventHandler RenderStreamCompleted;
        //void ResumeSchedule(string ScheduleID);
        //void ResumeScheduleAsync(string ScheduleID);
        //void ResumeScheduleAsync(string ScheduleID, object userState);
        //event ResumeScheduleCompletedEventHandler ResumeScheduleCompleted;
        //ServerInfoHeader ServerInfoHeaderValue { get; set; }
        //SessionHeader SessionHeaderValue { get; set; }
        //void SetCacheOptions(string Report, bool CacheReport, ExpirationDefinition Item);
        //void SetCacheOptionsAsync(string Report, bool CacheReport, ExpirationDefinition Item);
        //void SetCacheOptionsAsync(string Report, bool CacheReport, ExpirationDefinition Item, object userState);
        //event SetCacheOptionsCompletedEventHandler SetCacheOptionsCompleted;
        //void SetDataDrivenSubscriptionProperties(string DataDrivenSubscriptionID, ExtensionSettings ExtensionSettings, DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ParameterValueOrFieldReference[] Parameters);
        //void SetDataDrivenSubscriptionPropertiesAsync(string DataDrivenSubscriptionID, ExtensionSettings ExtensionSettings, DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ParameterValueOrFieldReference[] Parameters, object userState);
        //void SetDataDrivenSubscriptionPropertiesAsync(string DataDrivenSubscriptionID, ExtensionSettings ExtensionSettings, DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ParameterValueOrFieldReference[] Parameters);
        //event SetDataDrivenSubscriptionPropertiesCompletedEventHandler SetDataDrivenSubscriptionPropertiesCompleted;
        //void SetDataSourceContents(string DataSource, DataSourceDefinition Definition);
        //void SetDataSourceContentsAsync(string DataSource, DataSourceDefinition Definition);
        //void SetDataSourceContentsAsync(string DataSource, DataSourceDefinition Definition, object userState);
        //event SetDataSourceContentsCompletedEventHandler SetDataSourceContentsCompleted;
        //void SetExecutionOptions(string Report, ExecutionSettingEnum ExecutionSetting, ScheduleDefinitionOrReference Item);
        //void SetExecutionOptionsAsync(string Report, ExecutionSettingEnum ExecutionSetting, ScheduleDefinitionOrReference Item);
        //void SetExecutionOptionsAsync(string Report, ExecutionSettingEnum ExecutionSetting, ScheduleDefinitionOrReference Item, object userState);
        //event SetExecutionOptionsCompletedEventHandler SetExecutionOptionsCompleted;
        //void SetPolicies(string Item, Policy[] Policies);
        //void SetPoliciesAsync(string Item, Policy[] Policies);
        //void SetPoliciesAsync(string Item, Policy[] Policies, object userState);
        //event SetPoliciesCompletedEventHandler SetPoliciesCompleted;
        //void SetProperties(string Item, Property[] Properties);
        //void SetPropertiesAsync(string Item, Property[] Properties, object userState);
        //void SetPropertiesAsync(string Item, Property[] Properties);
        //event SetPropertiesCompletedEventHandler SetPropertiesCompleted;
        //void SetReportDataSourcesAsync(string Report, DataSource[] DataSources);
        //void SetReportDataSourcesAsync(string Report, DataSource[] DataSources, object userState);
        //event SetReportDataSourcesCompletedEventHandler SetReportDataSourcesCompleted;
        //Warning[] SetReportDefinition(string Report, byte[] Definition);
        //void SetReportDefinitionAsync(string Report, byte[] Definition);
        //void SetReportDefinitionAsync(string Report, byte[] Definition, object userState);
        //event SetReportDefinitionCompletedEventHandler SetReportDefinitionCompleted;
        //void SetReportHistoryLimit(string Report, bool UseSystem, int HistoryLimit);
        //void SetReportHistoryLimitAsync(string Report, bool UseSystem, int HistoryLimit);
        //void SetReportHistoryLimitAsync(string Report, bool UseSystem, int HistoryLimit, object userState);
        //event SetReportHistoryLimitCompletedEventHandler SetReportHistoryLimitCompleted;
        //void SetReportHistoryOptions(string Report, bool EnableManualSnapshotCreation, bool KeepExecutionSnapshots, ScheduleDefinitionOrReference Item);
        //void SetReportHistoryOptionsAsync(string Report, bool EnableManualSnapshotCreation, bool KeepExecutionSnapshots, ScheduleDefinitionOrReference Item, object userState);
        //void SetReportHistoryOptionsAsync(string Report, bool EnableManualSnapshotCreation, bool KeepExecutionSnapshots, ScheduleDefinitionOrReference Item);
        //event SetReportHistoryOptionsCompletedEventHandler SetReportHistoryOptionsCompleted;
        //void SetReportLink(string Report, string Link);
        //void SetReportLinkAsync(string Report, string Link);
        //void SetReportLinkAsync(string Report, string Link, object userState);
        //event SetReportLinkCompletedEventHandler SetReportLinkCompleted;
        //void SetReportParameters(string Report, ReportParameter[] Parameters);
        //void SetReportParametersAsync(string Report, ReportParameter[] Parameters);
        //void SetReportParametersAsync(string Report, ReportParameter[] Parameters, object userState);
        //event SetReportParametersCompletedEventHandler SetReportParametersCompleted;
        //void SetResourceContents(string Resource, byte[] Contents, string MimeType);
        //void SetResourceContentsAsync(string Resource, byte[] Contents, string MimeType);
        //void SetResourceContentsAsync(string Resource, byte[] Contents, string MimeType, object userState);
        //event SetResourceContentsCompletedEventHandler SetResourceContentsCompleted;
        //void SetRoleProperties(string Name, string Description, Task[] Tasks);
        //void SetRolePropertiesAsync(string Name, string Description, Task[] Tasks);
        //void SetRolePropertiesAsync(string Name, string Description, Task[] Tasks, object userState);
        //event SetRolePropertiesCompletedEventHandler SetRolePropertiesCompleted;
        //void SetScheduleProperties(string Name, string ScheduleID, ScheduleDefinition ScheduleDefinition);
        //void SetSchedulePropertiesAsync(string Name, string ScheduleID, ScheduleDefinition ScheduleDefinition, object userState);
        //void SetSchedulePropertiesAsync(string Name, string ScheduleID, ScheduleDefinition ScheduleDefinition);
        //event SetSchedulePropertiesCompletedEventHandler SetSchedulePropertiesCompleted;
        //void SetSubscriptionProperties(string SubscriptionID, ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ParameterValue[] Parameters);
        //void SetSubscriptionPropertiesAsync(string SubscriptionID, ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ParameterValue[] Parameters);
        //void SetSubscriptionPropertiesAsync(string SubscriptionID, ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ParameterValue[] Parameters, object userState);
        //event SetSubscriptionPropertiesCompletedEventHandler SetSubscriptionPropertiesCompleted;
        //void SetSystemPolicies(Policy[] Policies);
        //void SetSystemPoliciesAsync(Policy[] Policies);
        //void SetSystemPoliciesAsync(Policy[] Policies, object userState);
        //event SetSystemPoliciesCompletedEventHandler SetSystemPoliciesCompleted;
        //void SetSystemProperties(Property[] Properties);
        //void SetSystemPropertiesAsync(Property[] Properties, object userState);
        //void SetSystemPropertiesAsync(Property[] Properties);
        //event SetSystemPropertiesCompletedEventHandler SetSystemPropertiesCompleted;
        //void UpdateReportExecutionSnapshot(string Report);
        //void UpdateReportExecutionSnapshotAsync(string Report, object userState);
        //void UpdateReportExecutionSnapshotAsync(string Report);
        //event UpdateReportExecutionSnapshotCompletedEventHandler UpdateReportExecutionSnapshotCompleted;
       
        //BatchHeader BatchHeaderValue { get; set; }
        //void CancelAsync(object userState);
        //void CancelBatch();
        //void CancelBatchAsync(object userState);
        //void CancelBatchAsync();
        //event CancelBatchCompletedEventHandler CancelBatchCompleted;
        //bool CancelJob(string JobID);
        //void CancelJobAsync(string JobID, object userState);
        //void CancelJobAsync(string JobID);
        //event CancelJobCompletedEventHandler CancelJobCompleted;
        //string CreateBatch();
        //void CreateBatchAsync();
        //void CreateBatchAsync(object userState);
        //event CreateBatchCompletedEventHandler CreateBatchCompleted;
        //string CreateDataDrivenSubscription(string Report, ExtensionSettings ExtensionSettings, DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ParameterValueOrFieldReference[] Parameters);
        //void CreateDataDrivenSubscriptionAsync(string Report, ExtensionSettings ExtensionSettings, DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ParameterValueOrFieldReference[] Parameters, object userState);
        //void CreateDataDrivenSubscriptionAsync(string Report, ExtensionSettings ExtensionSettings, DataRetrievalPlan DataRetrievalPlan, string Description, string EventType, string MatchData, ParameterValueOrFieldReference[] Parameters);
        //event CreateDataDrivenSubscriptionCompletedEventHandler CreateDataDrivenSubscriptionCompleted;
        //void CreateDataSource(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties);
        //void CreateDataSourceAsync(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties, object userState);
        //void CreateDataSourceAsync(string DataSource, string Parent, bool Overwrite, DataSourceDefinition Definition, Property[] Properties);
        //event CreateDataSourceCompletedEventHandler CreateDataSourceCompleted;
        //void CreateFolder(string Folder, string Parent, Property[] Properties);
        //void CreateFolderAsync(string Folder, string Parent, Property[] Properties);
        //void CreateFolderAsync(string Folder, string Parent, Property[] Properties, object userState);
        //event CreateFolderCompletedEventHandler CreateFolderCompleted;
        //void CreateLinkedReport(string Report, string Parent, string Link, Property[] Properties);
        //void CreateLinkedReportAsync(string Report, string Parent, string Link, Property[] Properties);
        //void CreateLinkedReportAsync(string Report, string Parent, string Link, Property[] Properties, object userState);
        //event CreateLinkedReportCompletedEventHandler CreateLinkedReportCompleted;
        //void CreateReportAsync(string Report, string Parent, bool Overwrite, byte[] Definition, Property[] Properties, object userState);
        //void CreateReportAsync(string Report, string Parent, bool Overwrite, byte[] Definition, Property[] Properties);
        //event CreateReportCompletedEventHandler CreateReportCompleted;
        //string CreateReportHistorySnapshot(string Report, out Warning[] Warnings);
        //void CreateReportHistorySnapshotAsync(string Report, object userState);
        //void CreateReportHistorySnapshotAsync(string Report);
        //event CreateReportHistorySnapshotCompletedEventHandler CreateReportHistorySnapshotCompleted;
        //void CreateResource(string Resource, string Parent, bool Overwrite, byte[] Contents, string MimeType, Property[] Properties);
        //void CreateResourceAsync(string Resource, string Parent, bool Overwrite, byte[] Contents, string MimeType, Property[] Properties, object userState);
        //void CreateResourceAsync(string Resource, string Parent, bool Overwrite, byte[] Contents, string MimeType, Property[] Properties);
        //event CreateResourceCompletedEventHandler CreateResourceCompleted;
        //void CreateRole(string Name, string Description, Task[] Tasks);
        //void CreateRoleAsync(string Name, string Description, Task[] Tasks);
        //void CreateRoleAsync(string Name, string Description, Task[] Tasks, object userState);
        //event CreateRoleCompletedEventHandler CreateRoleCompleted;
        //string CreateSchedule(string Name, ScheduleDefinition ScheduleDefinition);
        //void CreateScheduleAsync(string Name, ScheduleDefinition ScheduleDefinition);
        //void CreateScheduleAsync(string Name, ScheduleDefinition ScheduleDefinition, object userState);
        //event CreateScheduleCompletedEventHandler CreateScheduleCompleted;
        //string CreateSubscription(string Report, ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ParameterValue[] Parameters);
        //void CreateSubscriptionAsync(string Report, ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ParameterValue[] Parameters, object userState);
        //void CreateSubscriptionAsync(string Report, ExtensionSettings ExtensionSettings, string Description, string EventType, string MatchData, ParameterValue[] Parameters);
        //event CreateSubscriptionCompletedEventHandler CreateSubscriptionCompleted;
       
        //void DeleteItemAsync(string Item);
        //void DeleteItemAsync(string Item, object userState);
        //event DeleteItemCompletedEventHandler DeleteItemCompleted;
        //void DeleteReportHistorySnapshot(string Report, string HistoryID);
        //void DeleteReportHistorySnapshotAsync(string Report, string HistoryID, object userState);
        //void DeleteReportHistorySnapshotAsync(string Report, string HistoryID);
        //event DeleteReportHistorySnapshotCompletedEventHandler DeleteReportHistorySnapshotCompleted;
        //void DeleteRole(string Name);
        //void DeleteRoleAsync(string Name);
        //void DeleteRoleAsync(string Name, object userState);
        //event DeleteRoleCompletedEventHandler DeleteRoleCompleted;
        //void DeleteSchedule(string ScheduleID);
        //void DeleteScheduleAsync(string ScheduleID);
        //void DeleteScheduleAsync(string ScheduleID, object userState);
        //event DeleteScheduleCompletedEventHandler DeleteScheduleCompleted;
        //void DeleteSubscription(string SubscriptionID);
        //void DeleteSubscriptionAsync(string SubscriptionID, object userState);
        //void DeleteSubscriptionAsync(string SubscriptionID);
        //event DeleteSubscriptionCompletedEventHandler DeleteSubscriptionCompleted;
        //void DisableDataSource(string DataSource);
        //void DisableDataSourceAsync(string DataSource);
        //void DisableDataSourceAsync(string DataSource, object userState);
        //event DisableDataSourceCompletedEventHandler DisableDataSourceCompleted;
        //void EnableDataSource(string DataSource);
        //void EnableDataSourceAsync(string DataSource, object userState);
        //void EnableDataSourceAsync(string DataSource);
        //event EnableDataSourceCompletedEventHandler EnableDataSourceCompleted;
        //void ExecuteBatch();
        //void ExecuteBatchAsync();
        //void ExecuteBatchAsync(object userState);
        //event ExecuteBatchCompletedEventHandler ExecuteBatchCompleted;
        //CatalogItem[] FindItems(string Folder, BooleanOperatorEnum BooleanOperator, SearchCondition[] Conditions);
        //void FindItemsAsync(string Folder, BooleanOperatorEnum BooleanOperator, SearchCondition[] Conditions);
        //void FindItemsAsync(string Folder, BooleanOperatorEnum BooleanOperator, SearchCondition[] Conditions, object userState);
        //event FindItemsCompletedEventHandler FindItemsCompleted;
        //void FireEvent(string EventType, string EventData);
        //void FireEventAsync(string EventType, string EventData, object userState);
        //void FireEventAsync(string EventType, string EventData);
        //event FireEventCompletedEventHandler FireEventCompleted;
        //void FlushCache(string Report);
        //void FlushCacheAsync(string Report);
        //void FlushCacheAsync(string Report, object userState);
        //event FlushCacheCompletedEventHandler FlushCacheCompleted;
        //bool GetCacheOptions(string Report, out ExpirationDefinition Item);
        //void GetCacheOptionsAsync(string Report, object userState);
        //void GetCacheOptionsAsync(string Report);
        //event GetCacheOptionsCompletedEventHandler GetCacheOptionsCompleted;
        //string GetDataDrivenSubscriptionProperties(string DataDrivenSubscriptionID, out ExtensionSettings ExtensionSettings, out DataRetrievalPlan DataRetrievalPlan, out string Description, out ActiveState Active, out string Status, out string EventType, out string MatchData, out ParameterValueOrFieldReference[] Parameters);
        //void GetDataDrivenSubscriptionPropertiesAsync(string DataDrivenSubscriptionID);
        //void GetDataDrivenSubscriptionPropertiesAsync(string DataDrivenSubscriptionID, object userState);
        //event GetDataDrivenSubscriptionPropertiesCompletedEventHandler GetDataDrivenSubscriptionPropertiesCompleted;
        //DataSourceDefinition GetDataSourceContents(string DataSource);
        //void GetDataSourceContentsAsync(string DataSource);
        //void GetDataSourceContentsAsync(string DataSource, object userState);
        //event GetDataSourceContentsCompletedEventHandler GetDataSourceContentsCompleted;
        //ExecutionSettingEnum GetExecutionOptions(string Report, out ScheduleDefinitionOrReference Item);
        //void GetExecutionOptionsAsync(string Report);
        //void GetExecutionOptionsAsync(string Report, object userState);
        //event GetExecutionOptionsCompletedEventHandler GetExecutionOptionsCompleted;
        //ExtensionParameter[] GetExtensionSettings(string Extension);
        //void GetExtensionSettingsAsync(string Extension);
        //void GetExtensionSettingsAsync(string Extension, object userState);
        //event GetExtensionSettingsCompletedEventHandler GetExtensionSettingsCompleted;
        //ItemTypeEnum GetItemType(string Item);
        //void GetItemTypeAsync(string Item, object userState);
        //void GetItemTypeAsync(string Item);
        //event GetItemTypeCompletedEventHandler GetItemTypeCompleted;
        //string[] GetPermissions(string Item);
        //void GetPermissionsAsync(string Item, object userState);
        //void GetPermissionsAsync(string Item);
        //event GetPermissionsCompletedEventHandler GetPermissionsCompleted;
        //Policy[] GetPolicies(string Item, out bool InheritParent);
        //void GetPoliciesAsync(string Item, object userState);
        //void GetPoliciesAsync(string Item);
        //event GetPoliciesCompletedEventHandler GetPoliciesCompleted;
        //Property[] GetProperties(string Item, Property[] Properties);
        //void GetPropertiesAsync(string Item, Property[] Properties);
        //void GetPropertiesAsync(string Item, Property[] Properties, object userState);
        //event GetPropertiesCompletedEventHandler GetPropertiesCompleted;
        //byte[] GetRenderResource(string Format, string DeviceInfo, out string MimeType);
        //void GetRenderResourceAsync(string Format, string DeviceInfo, object userState);
        //void GetRenderResourceAsync(string Format, string DeviceInfo);
        //event GetRenderResourceCompletedEventHandler GetRenderResourceCompleted;
        //DataSourcePrompt[] GetReportDataSourcePrompts(string Report);
        //void GetReportDataSourcePromptsAsync(string Report);
        //void GetReportDataSourcePromptsAsync(string Report, object userState);
        //event GetReportDataSourcePromptsCompletedEventHandler GetReportDataSourcePromptsCompleted;
        //void GetReportDataSourcesAsync(string Report, object userState);
        //void GetReportDataSourcesAsync(string Report);
        //event GetReportDataSourcesCompletedEventHandler GetReportDataSourcesCompleted;
        //byte[] GetReportDefinition(string Report);
       //void GetReportDefinitionAsync(string Report, object userState);
        //event GetReportDefinitionCompletedEventHandler GetReportDefinitionCompleted;
        //int GetReportHistoryLimit(string Report, out bool IsSystem, out int SystemLimit);
        //void GetReportHistoryLimitAsync(string Report, object userState);
        //void GetReportHistoryLimitAsync(string Report);
        //event GetReportHistoryLimitCompletedEventHandler GetReportHistoryLimitCompleted;
        //bool GetReportHistoryOptions(string Report, out bool KeepExecutionSnapshots, out ScheduleDefinitionOrReference Item);
        //void GetReportHistoryOptionsAsync(string Report, object userState);
        //void GetReportHistoryOptionsAsync(string Report);
        //event GetReportHistoryOptionsCompletedEventHandler GetReportHistoryOptionsCompleted;
        //string GetReportLink(string Report);
        //void GetReportLinkAsync(string Report, object userState);
        //void GetReportLinkAsync(string Report);
        //event GetReportLinkCompletedEventHandler GetReportLinkCompleted;
        //ReportParameter[] GetReportParameters(string Report, string HistoryID, bool ForRendering, ParameterValue[] Values, DataSourceCredentials[] Credentials);
        //void GetReportParametersAsync(string Report, string HistoryID, bool ForRendering, ParameterValue[] Values, DataSourceCredentials[] Credentials, object userState);
        //void GetReportParametersAsync(string Report, string HistoryID, bool ForRendering, ParameterValue[] Values, DataSourceCredentials[] Credentials);
        //event GetReportParametersCompletedEventHandler GetReportParametersCompleted;
        //byte[] GetResourceContents(string Resource, out string MimeType);
        //void GetResourceContentsAsync(string Resource, object userState);
        //void GetResourceContentsAsync(string Resource);
        //event GetResourceContentsCompletedEventHandler GetResourceContentsCompleted;
        //Task[] GetRoleProperties(string Name, out string Description);
        //void GetRolePropertiesAsync(string Name, object userState);
        //void GetRolePropertiesAsync(string Name);
        //event GetRolePropertiesCompletedEventHandler GetRolePropertiesCompleted;
        //Schedule GetScheduleProperties(string ScheduleID);
        //void GetSchedulePropertiesAsync(string ScheduleID, object userState);
        //void GetSchedulePropertiesAsync(string ScheduleID);
        //event GetSchedulePropertiesCompletedEventHandler GetSchedulePropertiesCompleted;
        //string GetSubscriptionProperties(string SubscriptionID, out ExtensionSettings ExtensionSettings, out string Description, out ActiveState Active, out string Status, out string EventType, out string MatchData, out ParameterValue[] Parameters);
        //void GetSubscriptionPropertiesAsync(string SubscriptionID);
        //void GetSubscriptionPropertiesAsync(string SubscriptionID, object userState);
        //event GetSubscriptionPropertiesCompletedEventHandler GetSubscriptionPropertiesCompleted;
        //string[] GetSystemPermissions();
        //void GetSystemPermissionsAsync(object userState);
        //void GetSystemPermissionsAsync();
        //event GetSystemPermissionsCompletedEventHandler GetSystemPermissionsCompleted;
        //Policy[] GetSystemPolicies();
        //void GetSystemPoliciesAsync(object userState);
        //void GetSystemPoliciesAsync();
        //event GetSystemPoliciesCompletedEventHandler GetSystemPoliciesCompleted;
        //Property[] GetSystemProperties(Property[] Properties);
        //void GetSystemPropertiesAsync(Property[] Properties);
        //void GetSystemPropertiesAsync(Property[] Properties, object userState);
        //event GetSystemPropertiesCompletedEventHandler GetSystemPropertiesCompleted;
        //void InheritParentSecurity(string Item);
        //void InheritParentSecurityAsync(string Item, object userState);
        //void InheritParentSecurityAsync(string Item);
        //event InheritParentSecurityCompletedEventHandler InheritParentSecurityCompleted;
        //ItemNamespaceHeader ItemNamespaceHeaderValue { get; set; }
        //CatalogItem[] ListChildren(string Item, bool Recursive);
        //void ListChildrenAsync(string Item, bool Recursive, object userState);
        //void ListChildrenAsync(string Item, bool Recursive);
        //event ListChildrenCompletedEventHandler ListChildrenCompleted;
        //Event[] ListEvents();
        //void ListEventsAsync();
        //void ListEventsAsync(object userState);
        //event ListEventsCompletedEventHandler ListEventsCompleted;
        //Extension[] ListExtensions(ExtensionTypeEnum ExtensionType);
        //void ListExtensionsAsync(ExtensionTypeEnum ExtensionType);
        //void ListExtensionsAsync(ExtensionTypeEnum ExtensionType, object userState);
        //event ListExtensionsCompletedEventHandler ListExtensionsCompleted;
        //Job[] ListJobs();
        //void ListJobsAsync(object userState);
        //void ListJobsAsync();
        //event ListJobsCompletedEventHandler ListJobsCompleted;
        //CatalogItem[] ListLinkedReports(string Report);
        //void ListLinkedReportsAsync(string Report, object userState);
        //void ListLinkedReportsAsync(string Report);
        //event ListLinkedReportsCompletedEventHandler ListLinkedReportsCompleted;
        //ReportHistorySnapshot[] ListReportHistory(string Report);
        //void ListReportHistoryAsync(string Report);
        //void ListReportHistoryAsync(string Report, object userState);
        //event ListReportHistoryCompletedEventHandler ListReportHistoryCompleted;
        //CatalogItem[] ListReportsUsingDataSource(string DataSource);
        //void ListReportsUsingDataSourceAsync(string DataSource, object userState);
        //void ListReportsUsingDataSourceAsync(string DataSource);
        //event ListReportsUsingDataSourceCompletedEventHandler ListReportsUsingDataSourceCompleted;
      
        //void ListRolesAsync();
        //void ListRolesAsync(object userState);
        //event ListRolesCompletedEventHandler ListRolesCompleted;
        //CatalogItem[] ListScheduledReports(string ScheduleID);
        //void ListScheduledReportsAsync(string ScheduleID, object userState);
        //void ListScheduledReportsAsync(string ScheduleID);
        //event ListScheduledReportsCompletedEventHandler ListScheduledReportsCompleted;
        //Schedule[] ListSchedules();
        //void ListSchedulesAsync(object userState);
        //void ListSchedulesAsync();
        //event ListSchedulesCompletedEventHandler ListSchedulesCompleted;
        //string[] ListSecureMethods();
        //void ListSecureMethodsAsync();
        //void ListSecureMethodsAsync(object userState);
        //event ListSecureMethodsCompletedEventHandler ListSecureMethodsCompleted;
        //Subscription[] ListSubscriptions(string Report, string Owner);
        //void ListSubscriptionsAsync(string Report, string Owner);
        //void ListSubscriptionsAsync(string Report, string Owner, object userState);
        //event ListSubscriptionsCompletedEventHandler ListSubscriptionsCompleted;
        //Subscription[] ListSubscriptionsUsingDataSource(string DataSource);
        //void ListSubscriptionsUsingDataSourceAsync(string DataSource);
        //void ListSubscriptionsUsingDataSourceAsync(string DataSource, object userState);
        //event ListSubscriptionsUsingDataSourceCompletedEventHandler ListSubscriptionsUsingDataSourceCompleted;
        //Role[] ListSystemRoles();
        //void ListSystemRolesAsync(object userState);
        //void ListSystemRolesAsync();
        //event ListSystemRolesCompletedEventHandler ListSystemRolesCompleted;
        //Task[] ListSystemTasks();
        //void ListSystemTasksAsync();
        //void ListSystemTasksAsync(object userState);
        //event ListSystemTasksCompletedEventHandler ListSystemTasksCompleted;
        //Task[] ListTasks();
        //void ListTasksAsync();
        //void ListTasksAsync(object userState);
        //event ListTasksCompletedEventHandler ListTasksCompleted;
        //void Logoff();
        //void LogoffAsync(object userState);
        //void LogoffAsync();
        //event LogoffCompletedEventHandler LogoffCompleted;
        //void LogonUser(string userName, string password, string authority);
        //void LogonUserAsync(string userName, string password, string authority);
        //void LogonUserAsync(string userName, string password, string authority, object userState);
        //event LogonUserCompletedEventHandler LogonUserCompleted;
        //void MoveItem(string Item, string Target);
        //void MoveItemAsync(string Item, string Target);
        //void MoveItemAsync(string Item, string Target, object userState);
        //event MoveItemCompletedEventHandler MoveItemCompleted;
        //void PauseSchedule(string ScheduleID);
        //void PauseScheduleAsync(string ScheduleID);
        //void PauseScheduleAsync(string ScheduleID, object userState);
        //event PauseScheduleCompletedEventHandler PauseScheduleCompleted;
        //DataSetDefinition PrepareQuery(DataSource DataSource, DataSetDefinition DataSet, out bool Changed);
        //void PrepareQueryAsync(DataSource DataSource, DataSetDefinition DataSet, object userState);
        //void PrepareQueryAsync(DataSource DataSource, DataSetDefinition DataSet);
        //event PrepareQueryCompletedEventHandler PrepareQueryCompleted;
        //bool UseDefaultCredentials { get; set; }
        //ExtensionParameter[] ValidateExtensionSettings(string Extension, ParameterValueOrFieldReference[] ParameterValues);
        //void ValidateExtensionSettingsAsync(string Extension, ParameterValueOrFieldReference[] ParameterValues, object userState);
        //void ValidateExtensionSettingsAsync(string Extension, ParameterValueOrFieldReference[] ParameterValues);
        //event ValidateExtensionSettingsCompletedEventHandler ValidateExtensionSettingsCompleted;
        # endregion

    }
}
